// 题16
function Test16() {
	function runAsync(x) {
		const p = new Promise((r) =>
			setTimeout(() => {
				r(x, console.log(x));
			}, 1000)
		);
		return p;
	}
	function runReject(x) {
		const p = new Promise((res, rej) =>
			setTimeout(() => {
				rej(`Error:${x}`, console.log(x));
			}, 1000 * x)
		);
		return p;
	}
	Promise.race([ runAsync(0), runReject(1), runAsync(2), runReject(3) ])
		.then((res) => console.log(res))
		.catch((err) => console.log(err));
}
Test16()
// 结果：
// 0
// 0
// 1
// 2
// 3
/**
 * 解析：Promise完成后，后续抛出的错误将不会再捕获
 */